<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ES6-promise对象原理的理解</title>
</head>
<body>
    1.理解：
        promise对象:代表了未来某个将要发生的事件(通常是一个异步操作)
        有了promise对象，可以将异步操作以同步的流程表达出来，避免了层层嵌套的回调函数（回调地狱）
        ES6的promise是一个构造函数，用来生成promise实例
    2.使用promise基本的两个步骤（2步）
        1创建promise对象
        let promise = new promise((resolve,reject)=>{
            // 初始化promise状态为pending
            //执行异步操作
            if(异步操作成功) {
                resolve(value);//修改promise的状态为fullfilled
            }else{
                reject(errMsg);// 修改promise的状态为rejected
            }
        })
        2、调用promise的then()
            promise.then(function(
                result => console.log(result),
                errorMsg => alert(errorMsg)
            ))
    3.promise对象的3个状态
        pending:初始状态；
        fullfilled: 成功状态
        rejected: 失败状态
    4.应用：
        使用promise实现超时处理
        使用promise封装ajax请求
    <script>
        //创建promise对象
        let promise = new Promise((resolve,reject)=>{
            //初始化promise状态： pending：初始化
            console.log('111')
            //执行异步操作，通常是发送ajax请求，开启定时器
            setTimeout(function(){
                console.log('3333')
                //根据异步任务的返回结果来去修改promise的状态
                // 异步任务执行成功
               resolve() // 修改promise的状态为fullfilled:成功的状态
                // 异步任务执行失败
                //reject('woshishibaile') // 修改promise的状态为rejected 失败的状态
            },2000)
        })
        console.log('2222')
        promise.then((data)=>{
            console.log(data,'成功了。。。');
        },(error) => {
            console.log(error,'失败了。。。')
        })
    </script>
</body>
</html>